package com.sinosoft.util;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.sinosoft.common.Const;
import com.sinosoft.exception.ComplainException;

/**
 * @description 时间工具类
 * @author Jason Rao
 * @version 2017年9月30日 下午10:18:35
 */
public class DateUtil {

	private static Logger logger = LoggerFactory.getLogger(DateUtil.class);
	
	/**
	 * 将时间转换成yyyy-MM-dd HH:mm:ss格式的字符串
	 * @param date
	 * @return
	 */
	public static String format(Date date) {
		if (null == date)
			return null;
		return new SimpleDateFormat(Const.DATETIME_PATTERN).format(date);
	}
	
	/**
	 * 将时间转换成yyyy-MM-dd格式的字符串
	 * @param date
	 * @return
	 */
	public static String format1(Date date) {
		if (null == date)
			return null;
		return new SimpleDateFormat(Const.DATE_PATTERN).format(date);
	}
	
	/**
	 * 将时间转换成HH:mm:ss格式的字符串
	 * @param date
	 * @return
	 */
	public static String format2(Date date) {
		if (null == date)
			return null;
		return new SimpleDateFormat(Const.TIME_PATTERN).format(date);
	}
	
	/**
	 * 将yyyy-MM-dd HH:mm:ss格式的字符串转换为java.util.Date对象
	 * @param dateStr
	 * @return
	 */
	public static Date parse(String dateStr) {
		if (StringUtils.isBlank(dateStr))
			return null;
		Date date = null;
		try {
			date = new SimpleDateFormat(Const.DATETIME_PATTERN).parse(dateStr);
		} catch (Exception e) {
			logger.error("将yyyy-MM-dd HH:mm:ss格式的字符串转换为java.util.Date对象异常！", e);
			throw new ComplainException("将yyyy-MM-dd HH:mm:ss格式的字符串转换为java.util.Date对象异常！", e);
		}
		return date;
	}
	
	/**
	 * 将yyyy-MM-dd格式的字符串转换为java.util.Date对象
	 * @param dateStr
	 * @return
	 */
	public static Date parse1(String dateStr) {
		if (StringUtils.isBlank(dateStr))
			return null;
		Date date = null;
		try {
			date = new SimpleDateFormat(Const.DATE_PATTERN).parse(dateStr);
		} catch (Exception e) {
			logger.error("将yyyy-MM-dd格式的字符串转换为java.util.Date对象异常！", e);
			throw new ComplainException("将yyyy-MM-dd格式的字符串转换为java.util.Date对象异常！", e);
		}
		return date;
	}
	
	/**
	 * 将HH:mm:ss格式的字符串转换为java.util.Date对象
	 * @param dateStr
	 * @return
	 */
	public static Date parse2(String dateStr) {
		if (StringUtils.isBlank(dateStr))
			return null;
		Date date = null;
		try {
			date = new SimpleDateFormat(Const.TIME_PATTERN).parse(dateStr);
		} catch (Exception e) {
			logger.error("将HH:mm:ss格式的字符串转换为java.util.Date对象异常！", e);
			throw new ComplainException("将HH:mm:ss格式的字符串转换为java.util.Date对象异常！", e);
		}
		return date;
	}
}
